git worktree
branchを切り替えずに別branchの操作ができる
$ git worktree add <作業ディレクトリ> <ブランチ名>
ex. $ git worktree add ./worktree-develop develop
指定したディレクトリ以下にまるっとそのブランチが入る
ここで新しいディレクトリは追加された感じになるが、gitにはtrakingされない
このbranchに対してcommitなどの操作をしたい場合は、そのディレクトリの中でコマンドを実行する
別branchではなく、同じbranchの昔のcommitもできる
<ブランチ名>を<commit id>にすればいい
$ git worktree list
worktreeのリストを一覧する
$ git worktree prune
branchの削除
tmpファイルを削除しただけではworktreeを実行する前の状態にならない
例えば、
Aブランチにいる状態で、worktree add ./tmp Bをしたときに、
pruneしてからじゃないとgit checkout Bに失敗する
fatal: 'develop' is already checked out at '/path/to/dir/Hoge/tmp'
これをしてリセットする
参考